1. Field of the Invention
The invention relates to the use of multiple processors in a sequential configuration for accelerating the encoding and decoding of a protocol for data transfer. More particularly, the invention relates to the use of multiple processors sequentially arranged to perform a respective protocol conversion application to the data as it passes from one processor to another processor in the sequential chain.
2. Description of the Related Art
Protocols are the standards that are used to specify how data is represented when it is transferred from one machine to another machine. Protocols specify how the transfer occurs, how errors are detected, and how acknowledgements used in a data transfer procedure are passed from machine to machine.
In order to simplify protocol design and implementation, communication tasks are typically segregated into separate subtasks that can be solved independently of each other. Each subtask is typically assigned a unique protocol, or protocol layer.
Layered protocols provide a conceptual framework for protocol design. In a layered protocol, each layer handles one part of the communications task, which typically corresponds to one protocol. For layered protocols, the ith software implementing layer on the destination machine receives exactly what the ith software implementing layer on the source machine sends. That is, the ith layer at the destination machine receives exactly the same object sent by ith layer at the source machine.
The layered protocol concept allows the protocol designer to focus attention on one layer at a time, without being concerned about how the other layers perform. For example, in a file transfer application, the protocol designer need only be concerned with two copies of the application program executing on two machines and what needs to be done in order to perform the file transfer exchange between the machines. The protocol designer makes the assumption that the application at the destination machine receives exactly what the application at the source machine sends.
FIG. 1 shows an example of a layered protocol, in which four layers are utilized to send data between Host A and Host B. The highest layer is the Application layer 110, the second highest layer is the Transport layer 120, the third highest layer is the Internet layer 130, and the lowest layer is the Network interface layer 140. As can be seen from FIG. 1, the Application layer 110 of the destination machine, say Host B, receives exactly the same message sent by the Application layer 110 of the source machine (Host A). The Transport layer 120 of the destination machine receives exactly the same packet sent by the Transport layer 120 of the source machine. The Internet layer 130 of the destination machine receives exactly the same datagram sent by the Internet layer 130 of the source machine. Lastly, the Network Interface layer 140 of the destination machine receives exactly the same frame sent by the Network Interface layer 140 of the source machine.
A frame of data passes from one machine to the other machine over the physical network 150, as seen from FIG. 1. FIG. 1 shows a simple transfer over a single network 150, and FIG. 2 shows a more complex transfer over multiple networks, using a router R between the first network 160 and the second network 170. As can be seen from FIG. 2, message delivery uses two separate network frames, one frame 180 for the transmission from Host A to router R, and another frame 185 from router R to host B. The frame 180 delivered to router R is exactly the same frame sent from host A, but it differs from the frame 185 sent between router R and host B. The same is true of the datagram 190 sent between host A and router R, and the datagram 195 sent between router R and host B.
The application layer 110 and the transport layer 120 deal with end-to-end issues, and are designed so that the software at the source (i.e., host A) communicates with its respective equivalent at the ultimate destination (i.e., host B). Thus, the packet 197 received by the transport layer 120 at host B is identical to the packet 197 sent by the transport layer 120 at host A. Further, the message 199 received by the application layer 110 is identical to the message 199 sent by the application layer 110 at host A.
The higher level layers deal primarily with end-to-end transfers, and the lower level layers deal primarily with single machine transfers. Thus, the ultimate destination (i.e., host B) may not receive the identical datagram 190 sent by the ultimate source (i.e., host A). For example, the header field of the datagram 190 is changed as it passes through the router R, for example.
FIG. 3 shows how the different layers are used to send data from a source machine to a destination machine over multiple networks. A sender on the source machine 310 transmits a message, which the IP layer 320 places in a datagram and sends across the first network 330 via the interface 340. The intermediate machine 350 receives the message on the first network 330 via its interface 340, passes the message up to the IP layer 320 of the intermediate machine 350, and routes the message onto a second network 360 via its interface 340. The intermediate machine 370 receives the message on the second network 360 via its interface 340, passes the message up to the IP layer 320 of the intermediate machine 370, and routes the message onto a third network 380 via its interface 340. The destination machine 390 receives the message on the third network 380 via its interface 340, the IP layer 320 of the destination machine 390 extracts the message, and the message is passed up to the higher layers 395 of protocol software, to be eventually received at the receiver 397. Note that the message was not passed up through the higher levels of protocol software by each of the intermediate machines 350, 370, since they had no need to extract the message, but only to pass it on to the desired destination machine.
Conventional layered protocols include TCP/IP, X.25 and ISO (also known as OSI). The TCP/IP protocol is a four-layered protocol, and the ISO protocol is a seven-layered protocol. The seven layers of the ISO protocol are: application layer (layer 7), presentation layer (layer 6), session layer (layer 5), transport layer (layer 4), network layer (layer 3), data link layer (layer 2), and physical hardware connection layer (layer 1).
The X.25 network consists of packet switches that contain the logic needed to route packets through the network. Hosts attach to one of the packet switches using a serial communication line, and hosts must follow a predetermined procedure in order to transfer packets onto the network and retrieve packets from the network.
At the physical layer, X.25 specifies a standard for the physical interconnection between host computers and network packet switches, as well as the procedures used to transfer packets from one machine to another.
The data link layer specifies how data travels between a host and the packet switch to which it connects. The data link layer defines the format of frames and specifies how the machines are to recognize frame boundaries, and well as providing error detection.
The network layer specifies the functionality for completing the interaction between the host and the network, and it defines the basic unit of transfer across the network. The network layer includes the concepts of destination addressing and routing. The network might allow packets defined by network layer protocols to be larger than the size of frames that can be transferred at the data link layer. The network layer software assembles a packet in the form the network expects and uses the data link layer to transfer it (presumably in multiple packets) to the packet switches. The network layer also responds to congestion problems on the network.
The transport layer provides end-to-end reliability by having the destination host communicate with the source host. The end-to-end checks ensure that no intermediate machines that carried the data have failed.
The session layer is used for remote terminal access to a network. Some carriers provide a special purpose host computer called a packet assembler and disassembler (PAD), which has dialup access. Subscribers can call up the PAD, and make a network connection to the host, and the session layer is utilized for this type of connectivity.
The presentation layer includes functions that many application programs need when using the network, such as text compression and graphics conversion into bit streams for transmission across the network.
The application layer includes application programs that use the network, such as electronic mail (e-mail) or file transfer programs. For example, the X.400 standard for electronic mail transfer may be utilized.
In FIG. 1, FIG. 2 and FIG. 3, the software for providing encoding and decoding for each of the layered protocols is housed at the respective source (host A) and destination machines (host B). This leads to a problem in providing a layered protocol in a time-efficient manner, since the same central processing unit (CPU) in the machine must be utilized by all of the protocol software units at the same time, in a time-shared manner. Thus, each of the software units compete with each other in terms of grabbing enough CPU time to encode/decode their respective protocol layer at the machine. Further, the CPU must be of sufficient capability to provide the necessary encoding/decoding for each of the layers.
It is an object of the invention to provide a system for encoding or decoding a layered protocol in an efficient and cost-effective manner.
To accomplish this and other objects, there is provided a protocol accelerator. The protocol accelerator includes a first processor programmed to encode and decode a first protocol layer. The protocol accelerator also includes a second processor coupled to the first processor and programmed to encode and decode the second protocol layer. The protocol accelerator further includes a third processor coupled to the second processor and programmed to encode and decode a third protocol layer.
There is also provided a method for processing a multilayer protocol related to incoming communications. The method includes a step of decoding a first protocol layer in a first processor. The method also includes a step of decoding a second protocol layer in a second processor. The method further includes a step of decoding a third protocol layer in a third processor.
There is also provided a method for processing a multilayer protocol related to incoming communications. The method includes a step of encoding a first protocol layer in a first processor. The method also includes a step of encoding a second protocol layer in a second processor. The method further includes a step of encoding a third protocol layer in a third processor.